iT邦幫忙

2021 iThome 鐵人賽

DAY 1
0
自我挑戰組

如何從 AVR 當中探索計算機的本質系列 第 1

Day1 — 前言:為什麼是 AVR?

  • 分享至 

  • xImage
  •  

或許看到本系列文章會產生的第一個疑問大概就是:「為什麼是 AVR?」。的確,現在潮潮都用 x86,不然就是 ARM,怎麼有人會想要講老掉牙的 AVR?

以下是筆者想要從 AVR 學習的原因:

1. Arduino 生態圈

AVR 的一大優勢在於 Arduino 的生態圈多數脫離不了 AVR,Arduino 提供了非常好的抽象,簡化了繁瑣的設定、編譯、上傳程式碼等步驟,透過 IDE 操作初學者也可以輕易將程式碼上傳。

儘管如此,背後運作的仍然是 AVR(這裡不討論以 ARM chip 的 Arduino 開發板),更棒的是 Arduino 是開源的,任何一個人都可以上 GitHub 查看原始碼。比起剛開始就直接挑戰 Linux 原始碼,從 AVR 開始除了程式碼規模較小之外,有任何問題都可以直接使用 Arduino 實機測試。

2. 架構簡單

比起 intel 或是 ARM 指令集,AVR 的指令集相對少很多,打開 Attiny85 的 datasheet 也就 120 個指令,在學習上也就相對好上手。以 Attiny85 的 datasheet 為例,整個 datasheet 也才 234 頁,還算是相對好消化的範圍。

3. 方便取得、操作

除了可以直接用 Arduino 來學習 AVR 之外,對於比較進階的學習者來說也可以直接買單顆 IC 來學習。以 Attiny85 為例,只有 8 隻腳而且可以直接插麵包板接線,想要測試程式碼運作時相對方便許多。Attiny85 只要 50 ~ 60 台幣就能入手,網路上隨便都買得到,比一杯飲料還便宜,燒掉也不會太心疼。

另外 AVR chip 常見的儲存機制都是內建在晶片當中,只要有電源,不用外接任何設備就可以直接運作

  • flash memory
  • EEPROM
  • SRAM
  • 內部時脈

學這個有用嗎?

學這個又沒有實際用途,為什麼還要大費周章學?

的確,學習整個作業系統是完全不同的概念,儘管你把 AVR 的指令跟概念搞熟也不代表明天就能寫 linux kernel(請右轉 jserv),但這無關於有沒有實際用途,而是對於事物本質運作的好奇。

因此我認為有這個想法時心態就已經完全不正確了。如同本系列的說明文一樣,這是一段感謝電、感謝電晶體、感謝現代計算機組織發展的歷程。

回頭想想計算機的歷史,發現電的存在、電晶體、積體電路、CPU 架構、半導體產業,簡直就是奇蹟。能夠在 21 世紀學習人類最偉大的智慧結晶,這件事情本身就已經夠迷人了。

質數的存在,最剛開始也只侷限在數論而已,但多年以後質數成為了密碼學的重要基礎,我們仰賴的加密傳輸,就是以質數的性質構築而成的。這應該是那些著迷於質數的數學家們從來也沒想過的吧。

因此如果真要給答案的話,本系列文章對你的職涯、寫程式的功力、薪水沒有任何幫助

本系列文規劃

要在 30 天內講完 AVR 的所有知識是非常困難的挑戰,因此可能省略部份概念或以較為精簡的文字帶過,也有可能無法達成連續 30 天發文。文章有必要時會貼出參考資源,有興趣的讀者可以另外參考。

  1. 前導:電是如何產生的
  2. 前導:電晶體如何組成邏輯閘
  3. 前導:計算機當中的重要電路(暫存器、記憶體、全加器)
  4. 前導:中斷
  5. 前導:準備工具
  6. 第一部份:AVR 介紹
  7. 第二部份:重要功能介紹
    1. timer/counter
    2. GPIO port
    3. ADC
  8. 第三部份:進階功能介紹
    1. watchdog
    2. interrupt
    3. UART
    4. sleep
    5. EEPROM
  9. 第四部份:PCB 製作(如果時間許可)
    1. 電源管理模組
    2. 如何使用 KiCad
    3. 如何製作電路
    4. 如何下單並製作 PCB

下一篇
Day2 — 前導:電是如何產生的?從交流到直流
系列文
如何從 AVR 當中探索計算機的本質7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言